Software testing may be performed to test whether software functions as expected. Software testing may be performed manually, or may be automated via test automation. Test automation is the use of special software (separate from the software being tested) to control the execution of tests and the comparison of actual outcomes with predicted outcomes.